home *** CD-ROM | disk | FTP | other *** search
Text File | 1991-02-22 | 8.8 KB | 367 lines | [TEXT/MPS ] |
- #include <UMacApp.h>
- #include <UTEView.h>
- #include <ToolUtils.h>
-
- #include "TEDrag.h"
-
- const int kBoxColor = redColor;
- const int cSizer = 4001;
-
- // Resizing support, JL 2/91
- pascal void TSizer::ISizer(TBox *itsBox, TTEDocument *itsDocument, TTextView *itsView)
- {
- TScroller *aScroller;
-
- aScroller = itsView->GetScroller(true);
- ICommand(cSizer, itsDocument, itsView, aScroller);
- fTEDocument = itsDocument;
- fTextView = itsView;
- fBox = itsBox;
- pT = false; pB = false; pL = false; pR = false;
- oldLocation = fBox->fLocation;
- newLocation = oldLocation;
- }
-
-
- pascal struct TCommand *TSizer::TrackMouse(TrackPhase aTrackPhase,
- VPoint *anchorPoint, VPoint *previousPoint,
- VPoint *nextPoint, Boolean mouseDidMove)
- {
- fStart = fTextView->ViewToQDPt(anchorPoint);
-
- if (aTrackPhase == trackPress)
- {
- if (PtInRect(fStart,&fBox->fTR))
- { pT = true; pR = true; }
- else if (PtInRect(fStart,&fBox->fTL))
- { pT = true; pL = true; }
- else if (PtInRect(fStart,&fBox->fBR))
- { pB = true; pR = true; }
- else if (PtInRect(fStart,&fBox->fBL))
- { pB = true; pL = true; }
- else if (PtInRect(fStart,&fBox->fT))
- { pT = true; }
- else if (PtInRect(fStart,&fBox->fB))
- { pB = true; }
- else if (PtInRect(fStart,&fBox->fL))
- { pL = true; }
- else if (PtInRect(fStart,&fBox->fR))
- { pR = true; }
- }
-
- if ((aTrackPhase == trackMove) && mouseDidMove)
- {
- fDelta = fTextView->ViewToQDPt(nextPoint);
- SubPt(fTextView->ViewToQDPt(anchorPoint),&fDelta);
-
- if ( !((fDelta.h == 0) && (fDelta.v == 0)) )
- {
- if (pT)
- { newLocation.top = oldLocation.top + fDelta.v; }
- if (pB)
- { newLocation.bottom = oldLocation.bottom + fDelta.v; }
- if (pL)
- { newLocation.left = oldLocation.left + fDelta.h; }
- if (pR)
- { newLocation.right = oldLocation.right + fDelta.h; }
- }
- }
-
- if ((aTrackPhase == trackRelease) && mouseDidMove)
- {
- fDelta = fTextView->ViewToQDPt(nextPoint);
- SubPt(fTextView->ViewToQDPt(anchorPoint),&fDelta);
-
- if ((fDelta.h == 0) && (fDelta.v == 0))
- { return gNoChanges; }
-
- fBox->fLocation = newLocation;
- }
- return this;
- }
-
- pascal void TSizer::TrackFeedback(VPoint *anchorPoint, VPoint *nextPoint,
- Boolean turnItOn, Boolean mouseDidMove)
- {
- PenState oldState;
-
- if (mouseDidMove)
- {
- GetPenState(&oldState);
- PenNormal();
- PenMode(patXor);
- FrameRect(&newLocation);
- SetPenState(&oldState);
- }
- }
-
- pascal void TSizer::DoIt()
- {
- fTextView->InvalidRect(&newLocation);
- fTextView->InvalidRect(&oldLocation);
- }
-
- pascal void TSizer::RedoIt()
- {
- fBox->fLocation = newLocation;
- DoIt();
- }
-
- pascal void TSizer::UndoIt()
- {
- fBox->fLocation = oldLocation;
- DoIt();
- }
-
-
- #ifdef qDebug
- pascal void TSizer::Fields(pascal void (*DoToField) (StringPtr fieldName,
- Ptr fieldAddr, short fieldType, void *link), void *link)
- {
- DoToField("\pTSizer", nil, bClass, link);
- DoToField("\pfTEDocument", (Ptr) &fTEDocument, bObject, link);
- DoToField("\pfTextView", (Ptr) &fTextView, bObject, link);
- DoToField("\pfBox", (Ptr) &fBox, bObject, link);
- DoToField("\poldLocation", (Ptr) &oldLocation, bRect, link);
- DoToField("\pnewLocation", (Ptr) &newLocation, bRect, link);
- DoToField("\pfStart", (Ptr) &fStart, bPoint, link);
- DoToField("\pfDelta", (Ptr) &fDelta, bPoint, link);
- DoToField("\ppT", (Ptr) &pT, bBoolean, link);
- DoToField("\ppB", (Ptr) &pB, bBoolean, link);
- DoToField("\ppL", (Ptr) &pL, bBoolean, link);
- DoToField("\ppR", (Ptr) &pR, bBoolean, link);
- inherited::Fields(DoToField, link);
- }
- #endif
-
- pascal void TBox::IBox(Rect *itsLocation)
- { fLocation = *itsLocation;
- fSelected = false; }
-
- pascal void TBox::DrawShape()
- {
- if (fSelected)
- {
- short halfH, halfV;
-
- halfH = (fLocation.right-fLocation.left)/2;
- halfV = (fLocation.bottom-fLocation.top)/2;
-
- PenSize (1,1);
- ForeColor(blackColor);
- FrameRect(&fLocation);
-
- fTagRgn = MakeNewRgn();
- OpenRgn();
-
- fTL.top = fLocation.top;
- fTL.left = fLocation.left;
- fTL.bottom = fTL.top + 4;
- fTL.right = fTL.left + 4;
- FrameRect(&fTL);
-
- fT.top = fLocation.top;
- fT.bottom = fT.top + 4;
- fT.left = fLocation.left + halfH - 2;
- fT.right = fT.left + 4;
- FrameRect(&fT);
-
- fTR.top = fLocation.top;
- fTR.bottom = fTR.top + 4;
- fTR.right = fLocation.right;
- fTR.left = fTR.right - 4;
- FrameRect(&fTR);
-
- fBL.bottom = fLocation.bottom;
- fBL.top = fBL.bottom - 4;
- fBL.left = fLocation.left;
- fBL.right = fBL.left + 4;
- FrameRect(&fBL);
-
- fB.bottom = fLocation.bottom;
- fB.top = fB.bottom - 4;
- fB.left = fLocation.left + halfH - 2;
- fB.right = fB.left + 4;
- FrameRect(&fB);
-
- fBR.bottom = fLocation.bottom;
- fBR.top = fBR.bottom - 4;
- fBR.right = fLocation.right;
- fBR.left = fBR.right - 4;
- FrameRect(&fBR);
-
- fL.top = fLocation.top + halfV - 2;
- fL.bottom = fL.top + 4;
- fL.left = fLocation.left;
- fL.right = fL.left + 4;
- FrameRect(&fL);
-
- fR.top = fLocation.top + halfV - 2;
- fR.bottom = fR.top + 4;
- fR.right = fLocation.right;
- fR.left = fR.right - 4;
- FrameRect(&fR);
-
- CloseRgn(fTagRgn);
-
- FillRgn(fTagRgn,qd.black);
-
- ForeColor(kBoxColor); }
- }
-
- pascal void TBox::NeedDiskSpace(long *data)
- {
- data = data + sizeof(fLocation) + sizeof(fSelected);
- }
-
- pascal void TBox::Read(short aRefNum)
- {
- long bytes;
-
- bytes = sizeof(fLocation); // bytes to store location
- FailOSErr(FSRead(aRefNum, &bytes, (Ptr) &fLocation));
- }
-
-
- pascal void TBox::Write(short aRefNum)
- {
- long bytes;
-
- bytes = sizeof(fLocation); // bytes to store location
- FailOSErr(FSWrite(aRefNum, &bytes, (Ptr) &fLocation));
- }
-
- #ifdef qDebug
- pascal void TBox::Fields(pascal void (*DoToField) (StringPtr fieldName,
- Ptr fieldAddr, short fieldType, void *link), void *link)
- {
- DoToField("\pTBox", nil, bClass, link);
- DoToField("\pfLocation", (Ptr) &fLocation, bRect, link);
- DoToField("\pfSelected", (Ptr) &fSelected, bBoolean, link);
- DoToField("\pfTagRgn", (Ptr) &fTagRgn, bRgnHandle, link);
- DoToField("\pfTL", (Ptr) &fTL, bRect, link);
- DoToField("\pfTR", (Ptr) &fTR, bRect, link);
- DoToField("\pfBL", (Ptr) &fBL, bRect, link);
- DoToField("\pfBR", (Ptr) &fBR, bRect, link);
- DoToField("\pfT", (Ptr) &fT, bRect, link);
- DoToField("\pfB", (Ptr) &fB, bRect, link);
- DoToField("\pfL", (Ptr) &fL, bRect, link);
- DoToField("\pfR", (Ptr) &fR, bRect, link);
- inherited::Fields(DoToField, link);
- }
- #endif
-
-
- pascal void TShape::NeedDiskSpace(long *data)
- {
- inherited::NeedDiskSpace(data);
- data = data + sizeof(fPenSize)
- + sizeof(fPenPat) + sizeof(fFillPat);
- }
-
- pascal void TShape::IBox(Rect *itsLocation)
- {
- fLocation = *itsLocation;
- fPenSize = 1;
-
- for (int i = 0; i<8 ; i++)
- { fPenPat[i] = qd.black[i];
- fFillPat[i] = qd.gray[i];
- }
- inherited::IBox(itsLocation);
- }
-
- #ifdef qDebug
- pascal void TShape::Fields(pascal void (*DoToField) (StringPtr fieldName,
- Ptr fieldAddr, short fieldType, void *link), void *link)
- {
- DoToField("\pTShape", nil, bClass, link);
- DoToField("\pfPenSize", (Ptr) &fPenSize, bInteger, link);
- DoToField("\pfPenPat", (Ptr) &fPenPat, bPattern, link);
- DoToField("\pfFillPat", (Ptr) &fFillPat, bPattern, link);
- inherited::Fields(DoToField, link);
- }
- #endif
-
-
- pascal void TRect::DrawShape()
- {
- PenSize (fPenSize,fPenSize);
- PenPat (fPenPat);
- FillRect(&fLocation,fFillPat);
- FrameRect(&fLocation);
- inherited::DrawShape();
- }
-
- pascal void TRect::NeedDiskSpace(long *data)
- {
- inherited::NeedDiskSpace(data);
- }
-
- #ifdef qDebug
- pascal void TRect::Fields(pascal void (*DoToField) (StringPtr fieldName,
- Ptr fieldAddr, short fieldType, void *link), void *link)
- {
- DoToField("\pTRect", nil, bClass, link);
- inherited::Fields(DoToField, link);
- }
- #endif
-
-
- pascal void TOval::DrawShape()
- {
- PenSize (fPenSize,fPenSize);
- PenPat (fPenPat);
- FillOval(&fLocation,fFillPat);
- FrameOval(&fLocation);
- inherited::DrawShape();
- }
-
- pascal void TOval::NeedDiskSpace(long *data)
- {
- inherited::NeedDiskSpace(data);
- }
-
- #ifdef qDebug
- pascal void TOval::Fields(pascal void (*DoToField) (StringPtr fieldName,
- Ptr fieldAddr, short fieldType, void *link), void *link)
- {
- DoToField("\pTOval", nil, bClass, link);
- inherited::Fields(DoToField, link);
- }
- #endif
-
-
- pascal void TRoundRect::IBox(Rect *itsLocation)
- {
- fOvalWidth = 10;
- fOvalHeight = 10;
- inherited::IBox(itsLocation);
- }
-
- pascal void TRoundRect::DrawShape()
- {
- PenSize (fPenSize,fPenSize);
- PenPat (fPenPat);
- FillRoundRect(&fLocation,fOvalWidth,fOvalHeight,fFillPat);
- FrameRoundRect(&fLocation,fOvalWidth,fOvalHeight);
- inherited::DrawShape();
- }
-
- pascal void TRoundRect::NeedDiskSpace(long *data)
- {
- inherited::NeedDiskSpace(data);
- data = data + sizeof(fOvalWidth) + sizeof(fOvalHeight);
- }
-
- #ifdef qDebug
- pascal void TRoundRect::Fields(pascal void (*DoToField) (StringPtr fieldName,
- Ptr fieldAddr, short fieldType, void *link), void *link)
- {
- DoToField("\pTRoundRect", nil, bClass, link);
- DoToField("\pfOvalWidth", (Ptr) &fOvalWidth, bInteger, link);
- DoToField("\pfOvalHeight", (Ptr) &fOvalHeight, bInteger, link);
- inherited::Fields(DoToField, link);
- }
- #endif
-